'''

其他技巧
下面是一些其他的 Selenium 自动化技巧

窗口大小
有时间我们需要获取窗口的属性和相应的信息，并对窗口进行控制

获取窗口大小
driver.get_window_size()
改变窗口大小
driver.set_window_size(x, y)
获取当前窗口标题
浏览网页的时候，我们的窗口标题是不断变化的，可以使用WebDriver的title属性来获取当前窗口的标题栏字符串。

driver.title
获取当前窗口URL地址
driver.current_url
例如，访问网易，并获取当前窗口的标题和URL

from selenium import  webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)

# 打开网站
driver.get('https://www.163.com')

# 获取网站标题栏文本
print(driver.title)

# 获取网站地址栏文本
print(driver.current_url)
截屏
有的时候，我们需要把浏览器屏幕内容保存为图片文件。

比如，做自动化测试时，一个测试用例检查点发现错误，我们可以截屏为文件，以便测试结束时进行人工核查。

可以使用 WebDriver 的 get_screenshot_as_file方法来截屏并保存为图片。

from selenium import  webdriver

driver = webdriver.Chrome()
driver.implicitly_wait(5)

# 打开网站
driver.get('https://www.baidu.com/')

# 截屏保存为图片文件
driver.get_screenshot_as_file('1.png')
手机模式
我们可以通过 desired_capabilities 参数，指定以手机模式打开chrome浏览器

参考代码，如下

from selenium import webdriver

mobile_emulation = { "deviceName": "Nexus 5" }

chrome_options = webdriver.ChromeOptions()

chrome_options.add_experimental_option("mobileEmulation", mobile_emulation)

driver = webdriver.Chrome( desired_capabilities = chrome_options.to_capabilities())

driver.get('http://www.baidu.com')

input()
driver.quit()
上传文件
有时候，网站操作需要上传文件。

比如，著名的在线图片压缩网站： https://tinypng.com/

通常，网站页面上传文件的功能，是通过 type 属性 为 file 的 HTML input 元素实现的。

如下所示：

<input type="file" multiple="multiple">
使用selenium自动化上传文件，我们只需要定位到该input元素，然后通过 send_keys 方法传入要上传的文件路径即可。

如下所示：

# 先定位到上传文件的 input 元素
ele = wd.find_element_by_css_selector('input[type=file]')

# 再调用 WebElement 对象的 send_keys 方法
ele.send_keys(r'h:\g02.png')

如果需要上传多个文件，可以多次调用send_keys，如下

ele = wd.find_element_by_css_selector('input[type=file]')
ele.send_keys(r'h:\g01.png')
ele.send_keys(r'h:\g02.png')
自动化Edge浏览器
点击这里，边看视频讲解，边学习下面的内容

自动化基于Chromium内核的 微软最新Edge浏览器，首先需要查看Edge的版本。

点击菜单 帮助和反馈 > 关于Microsoft Edge ，在弹出界面中，查看到版本，比如

版本 79.0.309.71 (官方内部版本) (64 位)
然后 点击这里，打开Edge浏览器驱动下载网页 ，并选择下载对应版本的驱动。

在自动化代码中，指定使用Edge Webdriver类，并且指定 Edge 驱动路径，如下所示

from selenium import webdriver

driver = webdriver.Edge(r'd:\tools\webdrivers\msedgedriver.exe')

driver.get('http://www.51job.com')
自动化Electron程序
Electron程序都是基于基于Chromium技术开发的，所以基本也可以用Chromedriver驱动自动化。

要自动化，首先需要得到内置 Chromium的版本号。

向开发人员查询打开 Dev Tools 窗口的快捷键（通常是ctrl + Shift + I），打开Dev Tools 窗口后， 在 Console tab中输入 如下语句，查看版本

> navigator.appVersion.match(/.*Chrome\/([0-9\.]+)/)[1]
  "79.0.3945.130"
然后去 chromedriver下载网址 ，下载对应版本的驱动。

在自动化程序中需要指定打开的可执行程序为Electron程序，而不是 Chrome浏览器。

如下所示

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

ops = Options()

# 指定Electron程序路径
ops.binary_location = r"C:\electronAPP.exe"

driver = webdriver.Chrome(r"e:\chromedriver.exe",
                            options = ops)


'''